
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

typedef unsigned char  u8;
typedef unsigned short u16;
typedef unsigned int   u32;

void test_pointer( u32* dst, u32* src, u32 len )
{
    memcpy( dst, src, len );
}
int main( void )
{
    u8 src[20] = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 };
    u8 dst[20];
    //多套一层后外界非对齐访问，编译器无法识别，如果在arm上使用标准库汇编指令会是memcpy4这个函数，导致硬件异常
    //arm-gcc无法复现这个指令，只发现在keil上会这样
    test_pointer( (u32*)dst, (u32*)( src + 1 ), 5 );
}
